/*
 * Copyright (c) 2018 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
const AbstractModel = require("../../common/abstract_model");

/**
 * ModifySendChannelOnMsgTypes response structure.
 * @class
 */
class ModifySendChannelOnMsgTypesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Message type sending channel.
 * @class
 */
class SendType extends  AbstractModel {
    constructor(){
        super();

        /**
         * Message type.
         * @type {number || null}
         */
        this.MsgType = null;

        /**
         * Delivery channel.
         * @type {number || null}
         */
        this.SendChannel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MsgType = 'MsgType' in params ? params.MsgType : null;
        this.SendChannel = 'SendChannel' in params ? params.SendChannel : null;

    }
}

/**
 * ModifySendChannelOnMsgTypes request structure.
 * @class
 */
class ModifySendChannelOnMsgTypesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Message sending channel.
         * @type {Array.<SendType> || null}
         */
        this.SendTypes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SendTypes) {
            this.SendTypes = new Array();
            for (let z in params.SendTypes) {
                let obj = new SendType();
                obj.deserialize(params.SendTypes[z]);
                this.SendTypes.push(obj);
            }
        }

    }
}

module.exports = {
    ModifySendChannelOnMsgTypesResponse: ModifySendChannelOnMsgTypesResponse,
    SendType: SendType,
    ModifySendChannelOnMsgTypesRequest: ModifySendChannelOnMsgTypesRequest,

}
